//
//  main.m
//  结构体作为对象的属性
//
//  Created by wenjim on 17/9/7.
//  Copyright © 2017年 WenJim. All rights reserved.
//

#import <Foundation/Foundation.h>

/*
 合理的设计一个“学生”类
 学生有＊ 姓名 ＊ 生日 两个属性和说出自己姓名生日的方法
 要求利用设计的学生类创建学生对象，并说出自己的性命和年龄
 
 描述学生类
 
 事物名称：学生（Student）
 属性：姓名（name），生日（birthday）
 行为：说出自己的性命和生日（say）
 
 */

typedef struct  {
    int year;
    int month;
    int day;
} Date;

/*
struct Date {
    int year;
    int month;
    int day;
};
 */

@interface Student : NSObject
{
    @public
    NSString * _name;
//    struct Date birthday;
    Date _birthday;
 }

-(void)say;

@end

@implementation Student

-(void)say
{
    NSLog(@"名字：%@, 生日: %i-%i-%i",_name,_birthday.year,_birthday.month,_birthday.day);
}



@end

int main(int argc, const char * argv[]) {
    
    // 1.创建学生对象
    Student * student = [Student new];
    // 2.设置学生对象的属性
    student -> _name = @"CWJ";
    // 2.1 结构体只能在定义的时候初始化
    // 2.2 系统并不清楚它是数组还是结构体
//    student -> _birthday = (Date){1992,2,23};
    
    student -> _birthday.year = 1993;
    student -> _birthday.month = 2;
    student -> _birthday.day = 23;
    
    // 3.让学生说出自己的姓名和生日
    [student say];
    
    
    Date d1 = {1993,10,17};
    Date d2;
    d2 = d1; // 本质是将d1所有的属性的值都拷贝一份赋值给d2
    
    d2.year = 1995;
    printf("d1 = year = %i\n",d1.year);
    printf("d2 = year = %i\n",d2.year);
    
    
    return 0;
}
